package cn.com.yx.ms.service;


import cn.com.yx.ms.domain.dbmodel.MqConfig;
import cn.com.yx.ms.domain.mq.*;
import cn.com.yx.ms.domain.mq.upstream.MqPushLiveConfigModel;

import java.util.List;

/**
 * MQ统一接口
 */
public interface IMqService {

    // region << MQ配置 >>

    List<MqConfigQueueModel> GetMqConfigQueues();

    MqConfig findOne(int command,String type);

    // endregion

    // region << 下行 >>

    /**
     * 调试模式
     * @param mqGridSelectedDevModels
     * @return
     */
    void send1001(String onOrOff,List<MqGridSelectedDevModel> mqGridSelectedDevModels);

    /**
     * 定时开关机
     * @param mqPushPowerOnOffModel
     */
    void send1004(MqPushPowerOnOffModel mqPushPowerOnOffModel);

    /**
     * 温湿度阀值
     * @param mqPushThresholdModel
     */
    void send1005(MqPushThresholdModel mqPushThresholdModel);

    void send1009(MqPushLedScreenOnOrOffModel mqPushLedScreenOnOrOffModel);

    /**
     * 公告下发
     * @param mqPushNoticeModel
     * @return
     */
    void send2002(MqPushNoticeModel mqPushNoticeModel);

    /**
     * 节目下发
     * @param mqPushProgramModel
     * @return
     */
    void send2003(MqPushProgramModel mqPushProgramModel);

    /**
     * 直播配置信息推送
     * @param mqPushLiveConfigModel
     */
    void send2012(MqPushLiveConfigModel mqPushLiveConfigModel);

    /**
     * 重启指令
     * @param mqGridSelectedDevModels
     * @return
     */
    void send4002(List<MqGridSelectedDevModel> mqGridSelectedDevModels);

    /**
     * 设置系统时间
     * @param time
     * @param mqGridSelectedDevModels
     */
    void send4003(String time,List<MqGridSelectedDevModel> mqGridSelectedDevModels);

    /**
     * TTS语音
     * @param tts
     * @param mqGridSelectedDevModels
     */
    void send4005(String tts,List<MqGridSelectedDevModel> mqGridSelectedDevModels);

    /**
     * 修改继电器控制
     * @param mqPushRelayModel
     */
    void send40064db(MqPushRelayModel mqPushRelayModel);
    /**
     * 继电器控制
     * @param mqPushRelayModel
     */
    void send4006(MqPushRelayModel mqPushRelayModel);
    /**
     * 远程升级（update主程序）
     * @param mqPushUpdatePackageModel
     */
    void send4007(MqPushUpdatePackageModel mqPushUpdatePackageModel);
    /**
     * 截屏指令
     * @param mqGridSelectedDevModels
     * @return
     */
    void send4009(List<MqGridSelectedDevModel> mqGridSelectedDevModels);

    /**
     * 远程升级（update子程序）
     * @param mqSelectedDevModelList
     */
    void send4010(List<MqSelectedDevModel> mqSelectedDevModelList);

    // endregion

    // region << 上行 >>

    void receive(String content);
    /**
     * LED显示开关控制
     * @param devsn
     * @param json
     */
    void receive1009(String devsn,String json);
    /**
     * 公告主请
     * @param devsn
     */
    void receive2002(String devsn,String json);
    /**
     * 公告主请
     * @param devsn
     */
    void receive2003(String devsn,String json);

    /**
     * 直播流配置资源主请获取
     * @param devsn
     * @param json
     */
    void receive2012(String devsn,String json);

    void receive2100(String devsn,String json) throws Exception;
    /**
     * 同步状态主请（1-下载中；2-解析中；3-完成）
     * @param devsn
     * @param json
     */
    void receive2101(String devsn,String json);

    /**
     * 生命体征查询
     * @param devsn
     * @param json
     */
    void receive3001(String devsn,String json);

    /**
     * 设备告警上报
     * @param devsn
     * @param json
     */
    void receive3002(String devsn,String json);
    /**
     * 心跳接收
     * @param devsn
     * @param json
     */
    void receive3003(String devsn,String json);


    /**
     * 系统校时
     * @param devsn
     * @param json
     */
    void receive4003(String devsn,String json);
    /**
     * 远程升级设备主请
     * @param devsn
     * @param json
     */
    void receive4007(String devsn,String json);
    /**
     * 远程升级应答
     * @param devsn
     * @param json
     */
    void receive4008(String devsn,String json);

    /**
     * 屏幕截屏base64获取
     * @param devsn
     * @param json
     */
    void receive4009(String devsn,String json) throws Exception;



    // endregion

}